package lu.med.praxiswahl.wahlumed.client.kalender;

/*
 * Das Modell, dass alle Daten des Terminkalender verarbeitet
 * Es werden immer die Daten des aktuellen Rahmens an Tagen im
 * Speicher gehalten
 * Der aktuelle Tag wird mit allen noetigen Informationen angezeigt,
 * die naechsten zehn werden nur mit der Termin Abkuerzung angezeigt, um
 * dazustellen, ob diese Tage noch frei sind oder nicht
 * Oben werden die Day Chooser f�r alle zwe�lf Monate des aktuellen
 * Jahres angezeigt
 */

import java.util.Calendar;
import java.util.GregorianCalendar;

import lu.med.praxiswahl.wahlumed.client.utilities.ContextFactoryRemote;
import lu.med.praxiswahl.wahlumed.client.utilities.ContextFactoryRemoteInt;
import lu.med.praxiswahl.wahlumed.service.beans.CalendarService;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.CalendarServiceInt;

/**
 * 
 * @author Lars Holger Roth
 */
public class Kalendar
{
    private GregorianCalendar gc;
    @SuppressWarnings("unused")
    private lu.med.praxiswahl.wahlumed.client.wclient.Main dataManager;

    public Kalendar(lu.med.praxiswahl.wahlumed.client.wclient.Main dataManager)
    {
	gc = new GregorianCalendar();
	this.dataManager = dataManager;
    }

    public boolean checkDay(int y, int m, int d)
    {
	@SuppressWarnings("unused")
	String yy = "" + y;
	String mm = "" + m;
	String dd = "" + d;
	if (mm.length() == 1)
	{
	    mm = "0" + mm;
	}
	if (dd.length() == 1)
	{
	    dd = "0" + dd;
	}

	/*
	 * try {
	 * dataManager.getOutputStream().writeUTF("DAY_CHK#"+yy+"#"+mm+"#"+dd);
	 * String a = dataManager.getInpupStream().readUTF(); if
	 * (a.equals("TRUE")) return true; } catch (IOException io) {
	 * JOptionPane
	 * .showMessageDialog(dataManager,"Verbindung zum Server verloren"); }
	 */
	return false;
    }

    public KalendarData getDataOfDay(String year, String month, String day,
	    String uhrzeit)
    {
	ContextFactoryRemoteInt remote_context = new ContextFactoryRemote();
	CalendarServiceInt cal = remote_context
		.getRemoteContextCalendarService();
	cal = new CalendarService();

	Calendar datum = new GregorianCalendar();
	datum.set(Calendar.YEAR, Integer.parseInt(year));
	datum.set(Calendar.MONTH, Integer.parseInt(month));
	datum.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day));

	KalendarData dataObject = new KalendarData();
	dataObject.setAnkunft(cal.getEntryByDatum_und_Uhrzeit(datum, uhrzeit)
		.getAnkunft_zeit());
	// [...] Sortie ?
	// dataObject.setSortie(cal.getEntryByDatum_und_Uhrzeit(datum,
	// uhrzeit).get???);
	dataObject.setUs_beginn(cal.getEntryByDatum_und_Uhrzeit(datum, uhrzeit)
		.getUntersuchungsbeginn());
	dataObject.setUs_typ(cal.getEntryByDatum_und_Uhrzeit(datum, uhrzeit)
		.getUntersuchungstyp());
	dataObject.setWartezeit(cal.getEntryByDatum_und_Uhrzeit(datum, uhrzeit)
		.getWartezeit());
	return dataObject;
    }

    public int getDay()
    {
	return gc.get(Calendar.DAY_OF_MONTH);
    }

    public int getMonth()
    {
	return gc.get(Calendar.MONTH);
    }

    public int getYear()
    {
	return gc.get(Calendar.YEAR);
    }

    public void setYear(String y)
    {
	gc.set(Calendar.YEAR, Integer.parseInt(y));
    }

    public void updateDataOfDay(String year, String month, String day,
	    String uhrzeit, String US_Beginn, String US_Typ, String ankunft,
	    String wartezeit, String sortir)
    {
	// Setzt die Daten des Tages für eine bestimmte Uhrzeit
	ContextFactoryRemoteInt remote_context = new ContextFactoryRemote();
	CalendarServiceInt cal = remote_context
		.getRemoteContextCalendarService();
	cal = new CalendarService();

	Calendar datum = new GregorianCalendar();
	datum.set(Calendar.YEAR, Integer.parseInt(year));
	datum.set(Calendar.MONTH, Integer.parseInt(month));
	datum.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day));

	cal.getA_CalendarInstance(cal.getEntryByDatum_und_Uhrzeit(datum,
		uhrzeit));
	cal.setAnkunft(ankunft);
	cal.setUS_Beginn(US_Beginn);
	cal.setUS_Typ(US_Typ);
	cal.setWarteZeit(wartezeit);
	cal.setSortie(sortir);
    }

}
